home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 1 / ETO Development Tools 1.iso / Essentials / Developer Essentials Jul 90 / Technical Docs / Apple II Technical Notes / Technical Notes (Text) / PDOS / TN.PDOS.023 < prev    next >
Encoding:
Text File  |  1990-04-03  |  15.4 KB  |  311 lines  |  [TEXT/pdos]

  1. Apple II
  2. Technical Notes
  3. _____________________________________________________________________________
  4.                                                   Developer Technical Support
  5.  
  6. ProDOS 8
  7. #23:    ProDOS 8 Changes and Minutia
  8.  
  9. Revised by:    Matt Deatherage                                     March 1990
  10. Written by:    Matt Deatherage                                      July 1989
  11.  
  12. This Technical Note documents the change history of ProDOS 8 through V1.8, and 
  13. it supersedes the information on this topic in the ProDOS 8 Technical 
  14. Reference Manual and the ProDOS 8 Update.
  15. Changes since July 1989:  Updated the description of version 1.4 to include 
  16. new AppleShare information and added the 1.8 GS/OS patch to the 1.8 
  17. description.
  18. _____________________________________________________________________________
  19.  
  20. Changes?  You're kidding.
  21.  
  22. No.  One of the side effects of evolving technology is that eventually little 
  23. things (like the disk operating system) have to change to support the new 
  24. technologies.  Every time Apple changes ProDOS 8, the manuals can't be 
  25. reprinted.  For one thing, it takes a long time to turn out a manual, by which 
  26. time there's often a new version done which the new manual doesn't cover.  For 
  27. another thing, programmers and developers don't tend to purchase revised 
  28. manuals (our informal research shows that more people have up-to-date Apple 
  29. /// RPS documentation than have up-to-date Apple IIc documentation--and this 
  30. was done before the Apple IIc Plus was released...).
  31.  
  32. So this Note explains what has changed between ProDOS 8 V1.0 and the current 
  33. release, V1.8, which began shipping with System Software 5.0.  Table 1 shows 
  34. what versions of ProDOS 8 existing documentation covers.
  35.  
  36.                                                    Version
  37. Document                                           Number
  38. _____________________________________________________________________________
  39. ProDOS 8 Technical Reference Manual                1.1.1
  40. ProDOS 8 Update                                    1.4
  41. AppleShare Programmer's Guide to the Apple IIGS    1.5
  42. _____________________________________________________________________________
  43.  
  44.                       Table 1-ProDOS 8 Documentation
  45.  
  46.  
  47. ProDOS 1.0
  48.  
  49. This was the first release of ProDOS, which was so unique it didn't even have 
  50. to be called ProDOS 8 to distinguish it from ProDOS 16.  If you have 
  51. documentation that predates ProDOS 1.0, you should seek professional help from 
  52. APDA at the address listed in Technical Note #0.
  53.  
  54. ProDOS 1.0.1
  55.  
  56.   o  Fixed a bug in the STATUS call which affected testing for the 
  57.      write-protected condition.
  58.  
  59. ProDOS 1.0.2
  60.  
  61.   o  Changed instructions used in interrupt entry routines on the 
  62.      global page so the accumulator would not be destroyed.
  63.   o  Fixed a bug in the Disk II core routines so the motor would shut 
  64.      off after recalibration on an error.
  65.  
  66. ProDOS 1.1
  67.  
  68.   o  Changed the internal MLI layout for future expansibility and 
  69.      maintenance.
  70.   o  Modified machine ID routines to identify IIc and enhanced IIe 
  71.      ROMs.
  72.   o  Removed code that allowed ProDOS to boot on 48K machines.
  73.   o  Removed the check for the ProDOS version number from the OPEN 
  74.      routine.
  75.   o  Incremented KVERSION (the ProDOS Kernel version) on the global 
  76.      page.
  77.   o  Modified the loader routines to reflect the presence of any 80-
  78.      column card following the established protocol (see ProDOS 8 
  79.      Technical Note #15, How ProDOS 8 Treats Slot 3).  Also, at this 
  80.      time, added code to allow slot 3 to be enabled on a IIe if an 80-
  81.      column card following the protocol was found.
  82.   o  Added code to turn off all disk motor phases prior to seeking a 
  83.      track in the Disk II driver.
  84.   o  Fixed a bug to prevent accesses to /RAM after it had been removed 
  85.      from the device list.
  86.   o  Reduced the size of the /RAM device by one block to protect 
  87.      interrupt vectors in the auxiliary language card.  The correct 
  88.      vectors are installed at boot time.
  89.  
  90. ProDOS 1.1.1
  91.  
  92.   o  Fixed a Disk II driver bug for mapping into drive 1.
  93.   o  Modified machine ID routines to give precedence to identifiable 
  94.      80-column cards in slot 3.
  95.  
  96. ProDOS 8 1.2
  97.  
  98.   o  Changed the name from ProDOS to ProDOS 8 to avoid confusion with 
  99.      ProDOS 16, which, again, this Note does not discuss.
  100.   o  Introduced the clock driver for the Apple IIGS.  The machine 
  101.      identification code was changed to indicate the presence of the 
  102.      clock on the IIGS.
  103.   o  Added preliminary network support by adding the network call and 
  104.      preliminary network driver space.
  105.   o  Fixed a bug in returning errors from calls to the RAM disk.  
  106.      Changed the RAM disk driver to return values of zero on reads and 
  107.      ignore writes to blocks zero, one, four, five, six, and seven, 
  108.      which are not accessible as storage in the driver's design.
  109.   o  Added a new system error ($C) for errors when deallocating blocks 
  110.      from a tree file.
  111.   o  Fixed a bug in zeroing a Volume Control Block (VCB) when trying to 
  112.      reallocate a previously used VCB.
  113.   o  Modified the ProDOS 8 loader code to automatically install up to 
  114.      four drives in slot 5 if a SmartPort device is found.  Removed the 
  115.      code to always leave interrupts disabled, which leaves the state 
  116.      of the interrupt flag at boot time unchanged while ProDOS 8 loads.
  117.   o  Changed the MLI entry to disable interrupts until after the 
  118.      MLIACTV flag is set and other ProDOS parameters are initialized.
  119.   o  Modified the QUIT code to allow the Delete key to function the 
  120.      same as the left arrow key.  Also fixed a bug so screen holes 
  121.      would not be trashed in 80-column mode.  Crunched code to allow 
  122.      soft switch accesses to force 40-column text mode.  Fixed a bug so 
  123.      the dispatcher would not trash the screen when executed with a NIL 
  124.      prefix.
  125.   o  Modified the ONLINE call so that it could be made to a device that 
  126.      had just been removed from the device list by the standard 
  127.      protocol.  Previous to this change, a VCB for the removed device 
  128.      was left, reducing the number of on-line volumes by one for each 
  129.      such device.  From this point on, removing a device should be 
  130.      followed by an ONLINE call to the device just removed.  The call 
  131.      returns error $28 (No Device Connected), but deallocates the VCB.
  132.   o  Added a spurious interrupt handler to allow up to 255 unclaimed 
  133.      interrupts before system death.
  134.   o  Removed the code which invoked low-resolution graphics on system 
  135.      death--it had not worked well and the space was needed.  The system 
  136.      had previously had the ability to display "INSERT SYSTEM DISK AND 
  137.      RESTART" without also displaying "-ERR xx", which was removed at 
  138.      this point for space reasons since the system wasn't using it (and 
  139.      hopefully you weren't, either, since it wasn't documented).
  140.   o  Changed MLIACTV to use an ASL instead of an LSR to turn "off" the 
  141.      flag.
  142.   o  Changed the OPEN call to correctly return error $4B (Unsupported 
  143.      Storage Type) instead of error $4A (incompatible file format for 
  144.      this version) when attempting to open a file with an unrecognized 
  145.      storage type.
  146.   o  Fixed an obscure bug involving READ in Newline mode.  If the 
  147.      requested number of bytes was greater than $FF, and the number of 
  148.      bytes in the file after the newline character was read was a 
  149.      multiple of $100, then the number of bytes reported transferred by 
  150.      ProDOS was equal to the correct number of transferred bytes plus 
  151.      $100.
  152.   o  Starting with V1.2 on an Apple IIGS, stopped switching slot 3 ROM 
  153.      space and left the determination of whether the slot or the port 
  154.      was enabled to the Control Panel; however, there was a bug in this 
  155.      implementation which was fixed in V1.7 and described in ProDOS 8 
  156.      Technical Note #15, How ProDOS 8 Treats Slot 3.
  157.   o  Updated the slot-based clock driver's year table through 1991.
  158.   o  Added a feature which allows ProDOS 8 to search for a file named 
  159.      ATINIT in the boot volume's root directory, to load and execute 
  160.      it, then to proceed normally with the boot process by loading the 
  161.      first .SYSTEM file.  No error occurs if the ATINIT file is not 
  162.      found, but any other error condition (including the file existing 
  163.      and not having file type $E2) causes a fatal error.
  164.   o  Changed loader code so ProDOS 8 could be loaded by ProDOS 16 
  165.      without automatically executing the ATINIT and the first .SYSTEM 
  166.      file.
  167.   o  Changed the device search process in the ProDOS 8 loader so 
  168.      SmartPort devices are only installed if they actually exist, and 
  169.      Disk IIs are placed with lowest priority in the device list so 
  170.      they are scanned last.
  171.   o  Forced Super Hi-Res off on an Apple IIGS when a fatal error 
  172.      occurs.  (Actually, this did not work, but it was fixed in V1.7.)
  173.   o  Inserted a patch to fix a bug in the first IIGS ROM that caused 
  174.      internal $Cn00 ROM space to be left mapped in if SmartPort failed 
  175.      to boot.
  176.  
  177. ProDOS 8 1.3
  178.  
  179. Warning:    This is not a stable version of ProDOS due to an illegal 
  180. 65C02 instruction which was added.  This version can damage 
  181. disks if used with a 6502 processor.
  182.  
  183.   o  Changed the code that resets phase lines for Disk IIs so phase 
  184.      clearing is done with a load instead of a store, since stores to 
  185.      even numbered locations cause bus contention, which is major 
  186.      uncool.  Changed the routine to force access to all eight even 
  187.      locations, which not only clears the phases, but also forces read 
  188.      mode, first drive, and motor off.  DOS used to do this; ProDOS had 
  189.      not been doing it.  If L7 had been left on when the Disk II driver 
  190.      was called and it checked write-protect with L6 high, write mode 
  191.      was enabled.  Forcing read mode leaves less to chance.
  192.   o  Changed deallocation of index blocks so index blocks are not 
  193.      zeroed, allowing the use of file recovery utilities.  Instead, 
  194.      index blocks are "flipped" (the first 256 bytes are exchanged with 
  195.      the last 256 bytes).
  196.   o  Since the UniDisk 3.5 interface card for the ][+ and IIe does not 
  197.      set up its device chain unless a ProDOS call is made to it, ProDOS 
  198.      STATUS calls are now made to the device before SmartPort STATUS 
  199.      calls.
  200.  
  201. ProDOS 8 1.4
  202.  
  203.   o  Removed an illegal 65C02 instruction which was added in V1.3.
  204.   o  Modified the Disk II driver so a routine that should only clear 
  205.      the phase lines only clears the phase lines.  Also clear Q7 to 
  206.      prevent inadvertent writes.
  207.  
  208. Warning:  The AppleTalk command, which was added in version 1.5, is 
  209.           present as a skeleton in this version.  Unfortunately, it's 
  210.           not a useful skeleton.  It moves a section of memory from a 
  211.           ProDOS location to another location and transfers control, 
  212.           totally oblivious of the fact that there is no code at this 
  213.           address.
  214.  
  215.           Even more unfortunate, the server software that ships with 
  216.           the Apple IIe Workstation Card is such that when the IIe is 
  217.           booted over the network with that server software, it is 
  218.           version 1.4 (KVERSION = 4).
  219.  
  220.           So if you boot version 1.4 from a local disk, making a $42 
  221.           call is fatal.  See ProDOS 8 Technical Note #21, Identifying 
  222.           ProDOS Devices, for a reliable way to identify AppleTalk 
  223.           volumes under ProDOS 8 version 1.4.
  224.  
  225. ProDOS 8 1.5
  226.  
  227.   o  ProDOS 8 1.5 is the first version to include network support 
  228.      through the ProDOS Filing Interface (PFI) as part of ProDOS 16 or 
  229.      on the Apple IIe Workstation Card without booting over the server 
  230.      (see the warning under version 1.4).  Made many changes to 
  231.      internal routines for PFI location and compatibility at this 
  232.      point.  Crunched and moved code for PFI booting and accessibility.
  233.   o  Changed some strings to all uppercase internally for string 
  234.      comparisons.
  235.   o  Removed the generic $42 AppleTalk call (the cause of the previous 
  236.      warning) which was introduced in V1.2, as PFI gets called through 
  237.      the global page.
  238.   o  Changed the ASL to clear the MLIACTV flag back to an LSR.  This 
  239.      doesn't make nested levels of busy states possible, but always 
  240.      clears the flag before calling interrupt handling routines that 
  241.      check MLIACTV as described in the ProDOS 8 Technical Reference 
  242.      Manual.
  243.   o  If an Escape key is detected in the keyboard buffer on an Apple 
  244.      IIc, it is removed.  This is friendly to the Apple IIc Plus, the 
  245.      ROM of which does not remove the Escape key it uses to detect that 
  246.      the system should be booted at normal speed.
  247.  
  248.  
  249. ProDOS 8 1.6
  250.  
  251.   o  Set up a parallel pointer to correct a PFI misinterpretation of an 
  252.      internal MLI pointer.
  253.  
  254. ProDOS 8 1.7
  255.  
  256.   o  Made a change to ensure that ProDOS 8 counts the volume's bitmap 
  257.      before incrementing the number of free blocks.  This fixed a bug 
  258.      where an uninitialized location was being incremented and 
  259.      decremented, incorrectly reporting a Disk Full error where none 
  260.      should have occurred.
  261.   o  Changed the handling of slot 3 ROM space to that described in 
  262.      ProDOS 8 Technical Note #15, How ProDOS 8 Treats Slot 3.
  263.   o  Changed code to permit the invisible bit of the access byte (bit 
  264.      2) to be set by applications.
  265.  
  266. ProDOS 8 1.8
  267.  
  268.   o  Fixed a bug introduced in V1.3.  If an error occurs while calling 
  269.      DESTROY on a file, the file is not deleted but the index blocks 
  270.      are not swapped back to normal position.  If a subsequent DESTROY 
  271.      of the same file succeeds, the volume's integrity is destroyed.  
  272.      Now ProDOS 8 marks the file as deleted, even if an error occurs, 
  273.      so any other errors do not cause a subsequent MLI call to trash 
  274.      the volume.  Note that "undelete" utilities attempting to undelete 
  275.      such a file (one in which an error occurred during the DESTROY ) 
  276.      may trash the volume.
  277.   o  Fixed the ONLINE call to ignore the unused low nibble of the 
  278.      unit_num parameter when deciding how many bytes to zero in the 
  279.      application's buffer.  This change fixes a bug which zeroed only 
  280.      the first 16 bytes of the caller's buffer before filling them if 
  281.      an ONLINE call was made with a unit_num of $0X, where X is non-
  282.      zero.
  283.   o  When loading on an Apple IIGS, ProDOS 8 now sets the video mode so 
  284.      the 80-column firmware is not active when the ProDOS 8 application 
  285.      gets control.
  286.   o  Changed internal version checking between GS/OS and ProDOS 8.  
  287.      Note that GS/OS and ProDOS 8 are still tied to each other--versions 
  288.      that didn't come on the same disk can't be used together.  The 
  289.      methods for checking versions were just altered.
  290.   o  Made the backward compatibility check when opening subdirectories 
  291.      inactive.  The test would always fail when opening a subdirectory 
  292.      with lowercase characters in the name (as assigned by the ProDOS 
  293.      FST under GS/OS), so the check was removed.  Note that using 
  294.      earlier versions of ProDOS 8 with such disks causes errors when 
  295.      trying to access files with such directories in their pathnames.
  296.   o  Expanded the ProDOS 8 loader code to provide for more room for 
  297.      future compatibility.
  298.   o  On a IIGS, installs a patch into the GS/OS stack-based call vector 
  299.      so that anyone calling GS/OS routines (like QDStartUp in ROM 03, 
  300.      for example) gets an appropriate error instead of performing a JSL 
  301.      into the stratosphere.
  302.  
  303.  
  304. Further Reference
  305. _____________________________________________________________________________
  306.   o  ProDOS 8 Technical Reference Manual
  307.   o  ProDOS 8 Update
  308.   o  AppleShare Programmer's Guide to the Apple IIGS
  309.   o  ProDOS 8 Technical Note #21, Identifying ProDOS Devices
  310.  
  311.